package alogrithm;

import java.util.ArrayList;

import engine.Edge;
import engine.Vertex;

public class Union
{
   private ArrayList<Vertex[]> group = new ArrayList<Vertex[]>();
   private int size;

   public Union(Edge e, int size)
   {
      Vertex v1 = e.getFirstNode();
      Vertex v2 = e.getSecondNode();
      Vertex[] v = new Vertex[size];
      v[0] = v1;
      v[1] = v2;
      this.size = size;
      group.add(v);
   }

   public Union(Vertex v1, Vertex v2, int size)
   {
      Vertex[] v = new Vertex[size];
      v[0] = v1;
      v[1] = v2;
      this.size = size;
      group.add(v);

   }

   public void addToUnion(Edge e)
   {

   }

   public void addToUnion(Vertex v1, Vertex v2)
   {
      int i = 0, j = 0;
      int gv1 = -1, gv2 = -1;
      while (i != group.size() && group.get(i) != null)
      {
         Vertex[] v = group.get(i);
         System.out.println("Group " + i);
         while (j != size && v[j] != null)
         {
            System.out.println("Node Name " + v[j].getName());
            if (v[j].equals(v1))
               gv1 = i;
            if (v[j].equals(v2))
               gv2 = i;

            // if(v[j].equals(v1))
            // System.out.println(" ZZZZZ"+v[j].getName());
            j++;
         }
         // Both node exist in the same group
         if (gv1 == gv2)
         {

         }
         else if (gv1 != gv2)
         {

         }

         j = 0;
         i++;
      }
   }

   public boolean checkVertex(Vertex v1)
   {
      int i = 0, j = 0;
      while (i != group.size() && group.get(i) != null)
      {
         Vertex[] v = group.get(i);
         while (j != size && v[j] != null)
         {

            if (v[j].equals(v1))
               System.out.println(" ZZZZZ" + v[j].getName());
            j++;
         }
         j = 0;
         i++;
      }
      return false;
   }

   // public boolean union(Vertex v1, Vertex v2)
   // {
   // Vertex varray[];
   //
   // // System.out.println("V1 "+v1.getPoint() +", V2 "+v2.getPoint());
   // int v1Exist =0;
   // int v2Exist =0;
   // int group1 =0;
   // int group2 =0;
   //
   // //initial the group array
   // if(group.size() == 0)
   // {
   // System.out.println("Add Vertex"+v1.getName()+" "+v2.getName());
   // varray = new Vertex[vertices.size()];
   // varray[0] = v1;
   // varray[1] = v2;
   // group.add(varray);
   // return false;
   // }
   // else
   // {
   // int i=0, j=0;
   // while(j!=group.size())
   // {
   // varray = group.get(j);
   // // System.out.println("Group "+j);
   //
   // //if i not equal to vertice size and the varray not null
   // while(i!=vertices.size() && varray[i]!=null)
   // {
   // // System.out.println(varray[i].getPoint());
   //
   // if(varray[i]==v1)
   // {
   // if(v1Exist ==1)
   // {
   // group2=j;
   // System.out.println("two groung "+v1.getName());
   //
   // }
   // if(v1Exist ==0)
   // group1=j;
   // v1Exist=1;
   // }
   // if(varray[i]==v2)
   // {
   // if(v2Exist ==1)
   // {
   // group2=j;
   // System.out.println("two groung "+v1.getName());
   // }
   // if(v2Exist ==0)
   // group2=j;
   // v2Exist=1;
   // group2=j;
   // }
   // i++;
   // }
   // //if both
   // if(v1Exist==1 && v2Exist==1)
   // {
   // //if both vertex exist in the same group
   // if(group1==group2)
   // return true;
   // else
   // {
   // Vertex vg1[] = group.get(group1);
   // Vertex vg2[] = group.get(group2);
   // merge(vg1, vg2);
   // group.remove(group2);
   // return false;
   // }
   //
   // }
   //
   // else if(v1Exist==1)
   // {
   // varray[i]=v2;
   // // System.out.println("Add V1");
   // // if(group1!=group2)
   // // {
   // // Vertex vg1[] = group.get(group1);
   // // Vertex vg2[] = group.get(group2);
   // // merge(vg1, vg2);
   // // group.remove(group2);
   // // }
   // return false;
   // }
   // else if(v2Exist==1)
   // {
   // varray[i]=v1;
   // // System.out.println("Add V2");
   // // if(group1!=group2)
   // // {
   // // Vertex vg1[] = group.get(group1);
   // // Vertex vg2[] = group.get(group2);
   // // merge(vg1, vg2);
   // // group.remove(group2);
   // // }
   // return false;
   // }
   // i=0;
   // j++;
   // }
   // }
   // if(v1Exist==0 && v2Exist==0)
   // {
   // // System.out.println("Add New Vertex");
   // varray = new Vertex[vertices.size()];
   // varray[0] = v1;
   // varray[1] = v2;
   // group.add(varray);
   // }
   // return false;
   // }

}
